package nextoffer;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

public class ClassTable {
    class Solution {
        public boolean canFinish(int numCourses, int[][] prerequisites) {
            Map<Integer, Integer> map = new HashMap<>();
            Map<Integer, Integer> map1 = new HashMap<>();
            Map<Integer, Integer> map2 = new HashMap<>();

            for(int i = 0; i < prerequisites.length; i++) {
                map1.put(prerequisites[i][0], 1);
            }
            map1.forEach((x,y) -> {   // 找到入度为0的节点
                for(int i = 0 ; i < numCourses; i++) {
                    if(!map1.containsKey(i)){
                        map.put(i, 1);
                    }
                }
            });
            AtomicInteger cnt = new AtomicInteger();
            for(int i = 0 ; i < prerequisites.length; i++) { // 0 1
                // 先学0 再学 1
                map2.put(prerequisites[i][1], prerequisites[i][0]);
            }
            map.forEach((x, y) -> {
                int t = x;
                while(true) {
                    if(map2.containsKey(t)) {
                        cnt.getAndIncrement();
                        t = map2.get(x);
                    } else {
                        break;
                    }
                }
            });
            return cnt.get() >= numCourses;


        }
    }
}
